The hardware and firmware components in a conventional data processing device may be referred to collectively as the system platform. An operating system may run on top of the system platform, providing a layer of abstraction that enables developers to disregard many of the specific details of the various hardware and firmware components of the underlying system platform. Many different operating systems have been created for many different system platforms.
In addition, software has been created to allow a single application to run on different operating systems. Such software provides another layer of abstraction, on top of the operating system. That layer of abstraction may be referred to as a virtual machine (VM) or a virtual runtime environment (VRE).
If an application is designed to run in a VRE, the application is not limited to a particular system platform or a particular operating system, but can be used on various different platforms with various different operating systems. The term “virtual application” may be used in general to refer to a program, an application, an applet, and/or other software that is designed to run in a VRE. By contrast, the term “virtualization software” may be used in general to refer to software that is designed to provide the VRE itself. For instance, a processing device may run virtualization software that creates a VRE which, in turn, enables a virtual application to run within that VRE.
Virtualization software typically includes a collection of components which work together to create the VRE. That collection of components may be referred to as a virtualization package.
Different developers have created various different virtualization packages to provide various different varieties of VREs. For instance, software distributed under the JAVA trademark provides a so-called “Java Runtime Environment” (JRE) or “Java Virtual Machine” (JVM). That virtualization package includes core classes and supporting libraries for implementing the JRE. Other software packages designed to provide VREs include, without limitation, products distributed under names or trademarks such as PARROT and COMMON LANGUAGE RUNTIME (CLR).
One of the challenges currently faced by the software industry is the challenge of protecting virtual applications and other software from unauthorized copying. Unauthorized copying of software may also be referred to as software piracy.